package scu.maqiang.cartesiancfd;

public class CartesianCell {
    public int[] num = new int[2];   //初始单位序号, 第num[0]行, 第num[1]列
    /**
     * 单元层级
     */
    public int lvl;

    /**
     *
     */
    public int sort;    //0外, 1内

    /**
     * 0-外, 1-外交, 2-内交, 3-内
     */
    public int cross;   //0外, 1外交, 2内交, 3内

    /**
     * 单元中心坐标
     */
    public double[] centerPoint;
    /**
     * 父单元
     */
    public CartesianCell father;
    /**
     * 子单元
     */
    public CartesianCell[] son;


    public CartesianCell upnei;
    public CartesianCell downnei;
    public CartesianCell leftnei;
    public CartesianCell rightnei;

    /**
     * 子单元位置0, 1, 2, 3, 无子结点为-1
     */
    public int sp;

    //原始变量, 包含{密度rho, 速度x, 速度y, 温度T, 压力P, 湍流1 tur_1, 湍流2 tur_2}
    public double[] U = new double[7];   //原始变量, 本时间步
    public double[] Ut = new double[7];  //原始变量, 下时间步
    public double[] Un = new double[7];  //原始变量, RK时间步

    // ! 原始变量(本时间步、下个时间、RK时间) rou、u、v、T、P + tur_1、tur_2
    public double mu, mut, dw, dt, utao; // 用到变量(输入/输出)   :
    public double rot,div;   // 用到变量(仅自适应)    : 速度旋度和散度
    public double Cf,yp,omg,ddp,dde,txy;            //求得变量(仅作输出)    : 不影响计算
    public CartesianCell ref; // 虚拟点用到            : 参考点所在子单元
    public double[] refxyd = new double[3];            //虚拟点用到            : 参考点坐标x,y以及物面距离
    public int[] cnode = new int[4];                // 四个顶点序号,不是单纯的1234
}
